package ar.org.sstuyv

import grails.converters.JSON

import java.text.DateFormat

import org.springframework.dao.DataIntegrityViolationException

class SolicitudController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index() {
        redirect(action: "list", params: params)
    }

//    def list(Integer max) {
//		params.max = Math.min(max ?: 10, 100)
//        [solicitudInstanceList: Solicitud.list(params), solicitudInstanceTotal: Solicitud.count()]
//		
//    }

//    def create() {
//        [solicitudInstance: new Solicitud(params)]
//    }


	def save = {
		def solicitudInstance = new Solicitud()
		
		Date fecha
		
//		String numero
//		
//		Partido partido
//		
//		Expediente expediente
//		
//		Barrio barrio
//		
//		User profesionalACargo
//		
//		EncuadreLegal encuadreLegal
//		
//		//String encuadreLegal
//		
//		// a registrar aprox
//		String cantidadParcelas
//		
//		Plano plano
		
//		TipoSolicitud tipoSolicitud
		DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
		
		//DateFormat formatter = new SimpleDateFormat('yy/M/d')			
		Date date =  df.parse(params.fecha) 
		solicitudInstance.setFecha(date)

		
		solicitudInstance.setNumero(params.numero.toInteger())

		Partido partido = Partido.findById(params.partido)
		solicitudInstance.setPartido(partido)
		
		Barrio barrio = Barrio.findById(params.barrio)
		solicitudInstance.setBarrio(barrio)
		
		TipoEncuadreLegal tec = TipoEncuadreLegal.findById(params.tipoEncuadreLegal)
		solicitudInstance.setTipoEncuadreLegal(tec)
		
		EncuadreLegal expropiacion = EncuadreLegal.findByNumLey1(params.expropiaciones)
		solicitudInstance.setExpropiacion(expropiacion)
		
		TipoSolicitud tipoSolicitud = TipoSolicitud.findById(params.tipoSolicitud)
		solicitudInstance.setTipoSolicitud(tipoSolicitud)
		
		User user = User.findByUsername(params.profesionalACargo)
		solicitudInstance.setProfesionalACargo(user)
		
//		solicitudInstance.setCantidadParcelas(params.cantidadParcelas)
		def expediente = Expediente.createCriteria().list() {
		//	if (params.fechaInicio) eq('fecha', params.fechaInicio?.toInteger())
			if (params.numero) like('numero', "%${params.expediente}%")
			//if (params.barrio) eq('barrio.id', params.barrio?.toLong())
		}
		
		solicitudInstance.setExpediente(expediente.get(0) )
		
		
//		solicitudInstance.setVersion(1)
		
		
		solicitudInstance.save(failOnError:true)
		
		
	
		//render(view: "create", model: [solicitudInstance: solicitudInstance])
		render ""
		
	}

//    def save = {
//		try {
//		def solicitudInstance = new Solicitud(params)
//		solicitudInstance.save(flush: true)
//		}catch(Exception e){
//			log.error("Error: " + e.getMessage())
//			
//		}
//		render ""
//    }

    def show(Long id) {
        def solicitudInstance = Solicitud.get(id)
        if (!solicitudInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'solicitud.label', default: 'Solicitud'), id])
            redirect(action: "list")
            return
        }

        [solicitudInstance: solicitudInstance]
    }

//    def edit(Long id) {
//        def solicitudInstance = Solicitud.get(id)
//        if (!solicitudInstance) {
//            flash.message = message(code: 'default.not.found.message', args: [message(code: 'solicitud.label', default: 'Solicitud'), id])
//            redirect(action: "list")
//            return
//        }
//
//        [solicitudInstance: solicitudInstance]
//    }

//    def update(Long id, Long version) {
//		def teamInstance = Solicitud.get(params.id)
//		if (teamInstance) {
//			if (params.version) {
//				version = params.version.toLong()
//				if (teamInstance.version > version) {
//					render "error"
//				}
//			}
//			teamInstance.properties = params
//			if (!teamInstance.hasErrors() && teamInstance.save(flush: true)) {
//				render "success"
//			}
//			else {
//				render "error"
//			}
//		}
//		else {
//			render "error"
//		}
//	}

	def update = {	
		def solicitud = Solicitud.get(params.id.toLong())
		if (solicitud) {
			if (params.version) {
				def version = params.version.toLong()
				if (solicitud.version > version) {
					render "error"
				}
			}
			
			DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
			
			Date date =  df.parse(params.fecha) 
			solicitud.setFecha(date)
			
			Partido partido = Partido.findById(params.partido)
			solicitud.setPartido(partido)

			Barrio barrio = Barrio.findById(params.barrio)
			solicitud.setBarrio(barrio)
			
//			EncuadreLegal el = EncuadreLegal.findbyId(params.encuadrelegal)
//			solicitud.setEncuadreLegal(el)
			
			User user = User.findByUsername(params.profesionalACargo)
			solicitud.setProfesionalACargo(user)
			
			Expediente expediente = Expediente.findByNumero(params.expediente)
			solicitud.setExpediente(expediente)
			//TODO
			//solicitud.properties = params
			//if (!solicitud.hasErrors() && solicitud.save(flush: true)) {
			solicitud.save(flush: true,failOnError:true)
			render '' 
			
		}
	}

	
	def profesionales = {

		def lst = User.findAll()
		StringBuffer buf = new StringBuffer("<select>")
		lst.each{
			buf.append("<option value=\"${it.username}\">")
			buf.append(it.username)
			buf.append("</option>")
			}
		buf.append("</select>")
		
		render buf.toString()
		
	}
	
	def delete = {
		def teamInstance = Solicitud.get(params.id)
		if (teamInstance) {
			try {
				teamInstance.delete(flush: true)
				render "${message(code: 'default.deleted.message', args: [message(code: 'team.label', default: 'Team'), params.id])}"
			}
			catch (org.springframework.dao.DataIntegrityViolationException e) {
				render "${message(code: 'default.not.deleted.message', args: [message(code: 'team.label', default: 'Team'), params.id])}"
			}
		}
		else {
			render "${message(code: 'default.not.found.message', args: [message(code: 'team.label', default: 'Team'), params.id])}"
		}
	}
	
	def userslist= {
		
		def lst = User.findAll()
		
			StringBuffer buf = new StringBuffer("<select>")
			lst.each{
				buf.append("<option value=\"${it.id}\">")
				buf.append(it.username)
				buf.append("</option>")
			}
			buf.append("</select>")
		
			render buf.toString()
	}
	
	def guardarComentario = {
		def user = User.get(session.user_id)
		def val=params.val
		
		def jsonData = [data: val + "hola"]
		
		render jsonData as JSON
		print val

		
	}
	

}
